home *** CD-ROM | disk | FTP | other *** search
/ Languguage OS 2 / Languguage OS II Version 10-94 (Knowledge Media)(1994).ISO / language / embedded / develop / symcoff.arc / PLTBREAD.C < prev    next >
Text File  |  1988-11-07  |  2KB  |  51 lines

  1. static char *sccsid[]={"@(#)pldtbread.c 2.1",
  2. "Copyright 1985 by Motorola Inc."};
  3. #include <stdio.h>
  4. #ifdef PCPORT
  5. #include "/pld/src/hd/pcport.h"      /*PC-PORT*/
  6. #endif
  7. #include "../hd/pfilehdr.h"
  8. #include "../hd/psyms.h"
  9. #include "../hd/pldfcn.h"
  10.  
  11. #include "../hd/pldf_dcl.h"        /*PC-PORT*/
  12. /****************** PLDTBREAD ******************************************gs##*/
  13. /*                                                                        ##*/
  14. /*                                                                        ##*/
  15. /* Written by:  Michael Greenberg - MIL                                   ##*/
  16. /*                                                                        ##*/
  17. /* ACTION:                                                                ##*/
  18. /*      Read an indexed symbol table entry of a common object file.       ##*/
  19. /*                                                                        ##*/
  20. /* SYNOPSIS:                                                              ##*/
  21.       int pldtbread(ldptr, symindex, symbol)                            /*##*/
  22. /*    --------------------------------------                              ##*/
  23. register LDFILE *ldptr;                                                 /*##*/
  24. register long   symindex;                                               /*##*/
  25. register SYMENT *symbol;                                                /*##*/
  26. /*                                                                        ##*/
  27. /*************************************************************************##*/
  28. {
  29.         register int    i;
  30.         register long   disp;
  31.  
  32.         if(symindex >= HEADER(ldptr).f_nsyms)
  33.                 return(FAILURE);
  34.  
  35.         if(HEADER(ldptr).f_symptr == 0L)
  36.                 return(FAILURE);
  37.  
  38.         /* seek to appropriate location */
  39.         disp = HEADER(ldptr).f_symptr + (long) (symindex * SYMESZ)
  40.                 + OFFSET(ldptr);
  41.  
  42.         if(disp != ftell(IOPTR(ldptr)))
  43.                 if(fseek(IOPTR(ldptr), disp, 0) != 0)
  44.                         return(FAILURE);
  45.  
  46.         if(fread(symbol, SYMESZ, 1, IOPTR(ldptr)) != 1)
  47.                 return(FAILURE);
  48.         return(SUCCESS);
  49. }
  50. /* Copyright 1985 by Motorola Inc. */
  51.